package com.gzz.boot.repush;

import java.util.List;
import java.util.function.Predicate;

/**
 * 接口 IRePushService.java
 * 使用Demo步骤
 * 创建重推定时任务->在对外接口方法中记录重推日志
 *
 * 步骤一: 创建重推定时任务
 * 建立定时任务定时执行重推方法IRePushService. rePush
 * 步骤二:在业务中记录对外接口方法接口日志
 * 在业务中调方法RePushUtil. saveReRushLog记录重推参数
 *
 */
public interface IRePushService {
    /**
     * 记录重推参数
     * @param interfaceName 接口名称
     * @param status 推送状态 0:未推送  1:已推送
     * @param callbackMethod 回调方法
     * @param className 类名 Class.getName()
     * @param methodName 方法名
     * @param params 方法参数
     */
    void saveReRushLog(String interfaceName, Integer status , Predicate<Object> callbackMethod, String className, String methodName, Object... params) throws Exception;

    /**
     * 重推 (后期建立定时任务,定时执行)
     * @param rePushList 为重推的数据集合
     */
    void rePush() throws Exception;

    /**
     * 查询要重推的数据
     * @return
     */
    List<RePush> queryRePushData();
}
